/* (C)oded by ESPRIT 2014 - 3B2 - Undrained Group*/
/* Par: Harzli Joumen */

#include "dessiner.h"
// example       |
void dessiner_colonne_d(int nbre_de_cases, char chaine[],...)
{
        char chaine_final[60]; // va contenir la chaine
        va_list vl; // definir une liste de parametre
        va_start(vl,chaine); // pointer la liste des parametres vers nos messages
        vsnprintf(chaine_final,sizeof(chaine_final),chaine,vl); // concaténation et formattage des chaines et retourner le resultat en buf
        va_end(vl); // librer vl

        int nbre_espaces;
        nbre_espaces = nbre_de_cases - strlen(chaine_final);
        /*
        char* resultat=NULL;
        resultat = ajouter_espaces_fin(buf,nbre_espaces);
        */
        char *buf=NULL;
        int i;
        int len_chaine;
        len_chaine=strlen(chaine_final);
        buf=calloc((nbre_espaces+len_chaine)+4, sizeof(char));

        strcpy(buf,chaine_final);
        for (i=0;i<nbre_espaces;i++)
                buf[len_chaine+i]=' ';
        buf[len_chaine+nbre_espaces]='|';
        buf[len_chaine+nbre_espaces+1]='\0';

        printf("%s",buf);
        free(buf);

}

void dessiner_milieu(int nbre_de_cases, char chaine[],...)
{
        char chaine_final[60]; // va contenir la chaine
        va_list vl; // definir une liste de parametre
        va_start(vl,chaine); // pointer la liste des parametres vers nos messages
        vsnprintf(chaine_final,sizeof(chaine_final),chaine,vl); // concaténation et formattage des chaines et retourner le resultat en buf
        va_end(vl); // librer vl

	int nbre_espaces;
        nbre_espaces = ((nbre_de_cases - strlen(chaine_final)) / 2);


        int i,len_chaine ;
        char *buf=NULL;
	int pos;


        len_chaine=strlen(chaine_final);
        buf=calloc((((nbre_espaces*2)+len_chaine)+4), sizeof(char));

        strcpy(buf,"");
        buf[0]='|';
        for (i=1;i<=nbre_espaces;i++)
                buf[i]=' ';
        strcat(buf,chaine_final);
	pos = strlen(buf);

        // Probléme resolu (pour que tous les chaines soit en ordre)
        if ((len_chaine % 2) == 0)
            nbre_espaces = nbre_espaces - 1;

       for (i=0;i<nbre_espaces;i++)
                buf[pos+i]=' ';
        buf[pos+nbre_espaces]='|';
        buf[pos+nbre_espaces+1]='\0';


	printf("%s",buf);
	free(buf);
}


// +------------------+
void dessiner_ligne(int nbre_espaces)
{
        int i ;
        char *buf;
        buf=calloc(nbre_espaces+3,sizeof(char));
        strcpy(buf,"");
        buf[0]='+';
        for (i=1;i<=nbre_espaces;i++)
                buf[i]='-';
        buf[nbre_espaces] = '+';
        buf[nbre_espaces+1]='\0';
        printf("%s\n",buf);
        free(buf);

}
